﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
using BLL.Validation;

namespace BLL
{
    public class LopHocManager : IValidator<LopHoc>
    {
        public static ActionResultAsList<LopHoc> LayDanhSachLopHoc()
        {
            var aResult = new ActionResultAsList<LopHoc>();
            try
            {
                aResult.Result = LopHocProvider.LayDanhSachLopHoc();
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public static ActionResult<int> ThemLopHoc(LopHoc lh)
        {
            var aResult = new ActionResult<int>();
            try
            {
                aResult.Result = LopHocProvider.ThemLopHoc(lh);
                if (aResult.Result <= 0)
                {
                    aResult.Exceptions.Add(new Exception("Thêm mới lớp học không thành công"));
                }
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public static ActionResult<bool> XoaLopHoc(int maLH)
        {
            var aResult = new ActionResult<bool>();
            try
            {
                aResult.Result = LopHocProvider.XoaLopHoc(maLH);
                if (!aResult.Result)
                {
                    aResult.Exceptions.Add(new Exception("Xóa thông tin lớp học không thành công"));
                }
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public static ActionResult<bool> CapNhatLopHoc(LopHoc lh)
        {
            var aResult = new ActionResult<bool>();
            try
            {
                aResult.Result = LopHocProvider.CapNhatLopHoc(lh);
                if (!aResult.Result)
                {
                    aResult.Exceptions.Add(new Exception("Cập nhật thông tin lớp học không thành công"));
                }
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public ValidationResult Validate(LopHoc obj)
        {
            var vResult = new ValidationResult();

            if (string.IsNullOrEmpty(obj.TenLop))
                vResult.Message.Add("Tên lớp học phải khác chuỗi rỗng");

            if (obj.SiSo < 0)
                vResult.Message.Add("Sỉ số lớp phải lớn hơn hoặc bằng 0");

            return vResult;
        }
    }
}
